284

|

6 Applications and Methods in Biosignal Processing

% Fit one model on the complete data set

modelAll = fitcknn(X,Y,'NumNeighbors',neighbours,...

'DistanceWeight','equal');

[¬,score] = resubPredict(modelAll);

predictedClass = predict(modelAll,X);

confusionMatrix = confusionmat(Y,predictedClass,...

'Order',["K" "A"]);

% write these predictions to the results for now

for i = 1:length(data)

obj.results(i).data = score(i,:);

end

% global Matrix to the log

logindex = 1;

obj.log(logindex).description = "confusionMatrixAll";

obj.log(logindex).data = reshape(confusionMatrix,1,[]);

logindex = logindex + 1;

obj.log(logindex).description = "accuracyAll";

obj.log(logindex).data = sum(diag(confusionMatrix))/...

sum(confusionMatrix,'all');

logindex = logindex + 1;

%cross validation, output of confusion Matrix for each fold

if mode == "standard"

cp = cvpartition(Y,'KFold',KFold);

elseif mode == "skip"

cp = cvpartition(Y(2:2:end),'KFold',KFold);

else

error("Mode not implemented");

end

for i = 1:KFold

% our own cross-validation

if mode == "standard"

trainingIndizes = training(cp,i);

testIndizes = test(cp,i);

elseif mode == "skip"

trainingIndizes = reshape(repmat(training(cp,i),1,2)',...

[],1);

testIndizes = reshape(repmat(test(cp,i),1,2)',[],1);